function throttle(fn, wait) {
  let timer = null;
  let lastTime = 0;
  return function (...args) {
    const nowTime = Date.now()
    const remainTime = wait - (nowTime - lastTime)
    if (remainTime <= 0) {
      //立即执行
      if (timer) {
        clearTimeout(timer)
        timer = null
      }
      fn.apply(this, args)
      lastTime = nowTime
    } else if (!timer) {
      timer = setTimeout(() => {
        fn.apply(this, args)
        lastTime = Date.now()
      }, remainTime)
    }
  }
}

const throttledFn = throttle(() => console.log('执行了'), 3000);

// 快速连续调用
throttledFn(); // 立即执行（第一次）
throttledFn(); // 被节流（1s 内不执行）
throttledFn(); // 被节流
// setTimeout(() => throttledFn(), 1100); // 1.1s 后再次执行